package com.springboot.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.springboot.common.Result;
import com.springboot.entity.Order;
import com.springboot.entity.OrderItem;
import com.baomidou.mybatisplus.extension.service.IService;
import com.springboot.vo.OrderListVO;

import java.util.List;

/**
 * <p>
 * 订单表 服务类
 * </p>
 *
 * @author zjb
 * @since 2025-10-30
 */
public interface IOrderService extends IService<Order> {

    /**
     * 创建订单
     *
     * @param order 订单信息
     * @param orderItems 订单明细列表
     * @return 创建结果
     */
    Result createOrder(Order order, List<OrderItem> orderItems);

    /**
     * 根据用户ID获取订单列表（分页）
     *
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 订单列表
     */
    Result getOrdersByUserId(Integer userId, Integer pageNum, Integer pageSize);

    /**
     * 根据订单号获取订单详情
     *
     * @param orderId 订单号
     * @param userId  用户ID（用于权限校验）
     * @return 订单详情
     */
    Result getOrderByOrderId(String orderId, Integer userId);

    /**
     * 取消订单
     *
     * @param orderId 订单号
     * @param userId  用户ID（用于权限校验）
     * @return 取消结果
     */
    Result cancelOrder(String orderId, Integer userId);

    /**
     * 确认收货
     *
     * @param orderId 订单号
     * @param userId  用户ID（用于权限校验）
     * @return 确认结果
     */
    Result confirmReceipt(String orderId, Integer userId);

    /**
     * 删除订单（仅限已取消的订单）
     *
     * @param orderId 订单号
     * @param userId  用户ID（用于权限校验）
     * @return 删除结果
     */
    Result deleteOrder(String orderId, Integer userId);
}